package com.xkcyy.one.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 工具实体类
 * 
 * @author yuand
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tool")
public class Tool extends BasicEntity {

    /**
     * 工具名称
     */
    private String name;

    /**
     * 工具描述
     */
    private String description;

    /**
     * 所属用户ID
     */
    private Long userId;

    /**
     * 入参JSON Schema
     */
    private String inputSchema;

    /**
     * 出参JSON Schema
     */
    private String outputSchema;

    /**
     * 实现类型(SCRIPT/BUILTIN/HTTP)
     */
    private String implementationType;

    /**
     * 关联脚本ID(实现类型为SCRIPT时)
     */
    private Long scriptId;

    /**
     * 内置实现类(实现类型为BUILTIN时)
     */
    private String builtinClass;

    /**
     * 工具配置(JSON格式，根据不同实现类型有不同结构)
     */
    private String configuration;

    /**
     * 版本号
     */
    private Integer version;

    /**
     * 状态(DEV/PUBLISHED/DEPRECATED)
     */
    private String status;

    /**
     * 实现类型枚举
     */
    public static class ImplementationType {
        /**
         * 脚本实现
         */
        public static final String SCRIPT = "SCRIPT";

        /**
         * 内置实现
         */
        public static final String BUILTIN = "BUILTIN";

        /**
         * HTTP API实现
         */
        public static final String HTTP = "HTTP";
    }

    /**
     * 状态枚举
     */
    public static class Status {
        /**
         * 开发中
         */
        public static final String DEV = "DEV";

        /**
         * 已发布
         */
        public static final String PUBLISHED = "PUBLISHED";

        /**
         * 已废弃
         */
        public static final String DEPRECATED = "DEPRECATED";
    }
}